package com.link.gateway.core.redis.redisclient;


import redis.clients.jedis.ScanResult;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * @author gsan
 * @create 2019/4/3
 */
public interface LinkRedisClient {

    /**
     * 获取缓存
     * @param key 键
     * @return 值
     */

    String get(String key);

    String hget(String key, String propertyKey);

    void close();

    Long ttl(String s);

    Long expire(String s, Integer tokenExpire);

    boolean exists(String loginInfoMapKey);

    List<String> hmget(String key, String... arr);

    Long hdel(String loginInfoMapKey, String key);

    Long hset(String loginInfoMapKey, String key, String value);

    String hmset(String loginInfoMapKey, Map<String, String> loginInfoMap);

    String set(String key, String value);

    String set(String key, String value, String nxxx, String expx, int time);

    List<String> brpop(int i, String key);

    long llen(String key);

    Long lpush(String key, String value);

    Long sadd(String key, String... value);

    long scard(String key);

    String spop(String key);

    Set<String> keys(String s);

    Set<byte[]> keys(byte[] pattern);

    Long del(String[] keyStrs);

    Long del(String mutexKey);

    String setex(String mutexKey, int i, String y);

    String select(int dbIndex);

    Set<String> hkeys(String var1);

    List<byte[]> mget(byte[][] keys);

    Map<String, String> hgetAll(String key);

    List<String> lrange(String key, long start, long end);

    String ltrim(String key, long start, long end);

    String lindex(String key, long index);

    Long pexpire(String key, long milliseconds);

    Long hincrBy(String key, String field, long value);

    Double  hincrByFloat(String key, String field, double value);

    Long  setnx(String key, String value);

    String  getSet(String key, String value);

    String  rpop(String key);

    Boolean  scriptExists(String key, String sha1);

    String  scriptLoad(String script, String key);

    Object evalsha(String sha1, int keyCount, String... params);

    Boolean hexists(String key, String field);

    ScanResult<Map.Entry<String, String>> hscan(final String key, final String cursor);

    public Object eval(String script, List<String> keys, List<String> args);
}
